package com.nulldev.util.VariableAPI.util.strings.splitters.third_party;

import java.util.regex.Pattern;

import com.nulldev.util.data.Variables;

/*
 * Copyright (C) 2009 The Guava Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
final class Platform {
	private static final PatternCompiler patternCompiler = loadPatternCompiler();

	static CommonPattern compilePattern(String pattern) {
		Variables.checkNotNull(pattern);
		return patternCompiler.compile(pattern);
	}

	private static PatternCompiler loadPatternCompiler() {
		return new JdkPatternCompiler();
	}

	static CharMatcher precomputeCharMatcher(CharMatcher matcher) {
		return matcher.precomputedInternal();
	}

	static boolean patternCompilerIsPcreLike() {
		return patternCompiler.isPcreLike();
	}

	private static final class JdkPatternCompiler implements PatternCompiler {
		@Override
		public CommonPattern compile(String pattern) {
			return new JdkPattern(Pattern.compile(pattern));
		}

		@Override
		public boolean isPcreLike() {
			return true;
		}
	}
}